package com.thirteen.app.service;

import com.thirteen.app.dto.CreateExamBySearchResponse.PaperSearchDto;
import com.thirteen.app.dto.CreateExamResponse.PaperInfoExamDto;
import com.thirteen.app.dto.CreatePaperResponse.PaperCreateDto;
import com.thirteen.app.dto.PaperListResponse.PaperListStudentDto;
import com.thirteen.app.dto.PaperWithAnswerResponse.PaperWithAnswerDto;
import com.thirteen.app.dto.PaperWithScoreResponse.PaperWithScoreDto;
import com.thirteen.app.dto.PaperListResponse.PaperListTeacherDto;
import com.thirteen.app.dto.PaperRespose.AnswerDto;
import com.thirteen.app.dto.PaperRespose.PaperDto;
import com.thirteen.app.dto.PaperWithSolutionResponse.PaperWithSolutionDto;

import java.util.List;
import java.util.Map;

public interface PaperService {

    //    查找一张试卷
    PaperDto queryPaper(Integer examRecordId);

    //    考试记录阅卷后
    PaperWithScoreDto queryPaperWithScore(Integer examRecordId);

    //    提供给老师的试卷
    PaperWithAnswerDto queryPaperWithAnswer(Integer examRecordId);

    //    提供给管理员的试卷
    PaperWithSolutionDto queryPaperWithSolution(Integer examRecordId);

    //    提交答案
    Boolean submitAnswer(AnswerDto answerDto);

    //    提交试卷
    Boolean submitPaper(Integer examRecordId);

    //    根据课程查找试卷
    List<PaperSearchDto> queryAllPaperByCourseId(Integer courseId, String paperName, Integer offset, Integer limit);

    //    查询试卷简略信息
    PaperInfoExamDto queryPaperInfo(Integer paperId);

    //    根据自定义出题
    Boolean customCreatePaper(PaperCreateDto paperCreateDto);

    //    老师查询自己创建的试卷
    List<PaperListTeacherDto> queryPaperListTeacher(Integer userId);

    //    考试阅卷方式
    Boolean isMachineJudge(Integer examRecordId);

    //    管理员查询所有试卷
    Map<String, Object> queryAllPaperByLimit(String examName, String courseName, Integer pageIndex, Integer pageSize);

    //    删除试卷
    Boolean deletePaper(Integer userId);

    //    管理员审核试卷
    Boolean judgePaperAuditAdmin(Integer paperId, Integer audit);

    //    老师提交试卷审阅申请
    Boolean applyPaperAuditTeacher(Integer paperId);
}

